home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / tplib21.zip / INSTALL.EXE / SUMISC.ASM < prev    next >
Assembly Source File  |  1993-06-24  |  2KB  |  64 lines

  1. ;               TURBO PASCAL LIBRARY 2.1
  2. ;               Miscellaneous routines module
  3.  
  4.                 TITLE   UNIT STRINGS: Miscellaneous routines module
  5.                 PAGE    66,132
  6.                 %BIN    12
  7.  
  8. CODE            SEGMENT WORD
  9.                 ASSUME  CS:CODE
  10.                 LOCALS
  11.                 PUBLIC  DUPLCHAR, STRIPBIT7
  12.  
  13.  
  14. ;               FUNCTION DuplChar (ch: CHAR; count: BYTE): STRING
  15. ;               Duplicate character
  16.  
  17. DUPLCHAR        PROC    FAR
  18.                 PUSH    BP
  19.                 MOV     BP,SP                   ; Set up stack frame pointer
  20.                 LES     DI,[BP+10]              ; Point ES:DI to output string
  21.                 MOV     AX,[BP+6]               ; Get count in AL
  22.                 CLD
  23.                 STOSB                           ; Store as output length byte
  24.                 MOV     CL,AL                   ; Transfer count to CX
  25.                 XOR     CH,CH
  26.                 JCXZ    @@L1
  27.                 MOV     AX,[BP+8]               ; Get character in AL
  28.                 REP STOSB                       ; Store character
  29. @@L1:           POP     BP
  30.                 RET     4
  31. DUPLCHAR        ENDP
  32.  
  33.                 PAGE
  34.  
  35.  
  36. ;               FUNCTION StripBit7 (s: STRING): STRING
  37. ;               Clear high-order bit of each character in string
  38.  
  39. STRIPBIT7       PROC    FAR
  40.                 PUSH    BP
  41.                 MOV     BP,SP                   ; Set up stack frame pointer
  42.                 PUSH    DS
  43.                 LDS     SI,[BP+6]               ; Point DS:SI to input string
  44.                 LES     DI,[BP+10]              ; Point ES:DI to output string
  45.                 MOV     CL,[SI]                 ; Get string length in CX
  46.                 XOR     CH,CH
  47.                 CLD
  48.                 MOVSB                           ; Transfer length byte
  49.                 JCXZ    @@L2
  50. @@L1:           LODSB                           ; Get next character
  51.                 AND     AL,7FH                  ; Clear high-order bit
  52.                 STOSB                           ; Write to output string
  53.                 LOOP    @@L1                    ; Go get next character
  54. @@L2:           POP     DS
  55.                 POP     BP
  56.                 RET     4
  57. STRIPBIT7       ENDP
  58.  
  59. CODE            ENDS
  60.  
  61.                 END
  62.  
  63.  
  64.